/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CapaLogica;

import CapaDatos.Articulo_DAO;
import CapaDatos.Subasta_DAO;
import CapaSeguridad.*;

/**
 *
 * @author Cajas
 */
public class Articulo {
    private int id_articulo;
    private String nombre;
    private int puntuacion;
    private String fechaIngreso;
    private String descripcion;
    private double precio;
    private String imagen;
    private int categoria;
    private int status;
    private int id_usuario;
    private boolean subasta = false;

    public Articulo(){}
    
    public Articulo(String nombre, String descripcion, String imagen, int categoria, double precio) {
        this.nombre = nombre;
        this.descripcion = descripcion;
        this.imagen = imagen;
        this.categoria = categoria;
        this.puntuacion = 0;
        this.precio = precio;
    }
    
    /*
     * Codigos para los mensajes
     * En objeto respuesta devolver el id que me genera la consulta
     * En tipo objeto nada
     * 0   No hubo error en tipo mensaje
     * 41
     * 42
     * 43
     * 44
     * 45
     * 46
     * 47
     * 48
     * 49
     */
    public Articulo(String nombre, String fechaIngreso, String descripcion, String imagen, int categoria, double precio) {
        this.nombre = nombre;
        this.descripcion = descripcion;
        this.imagen = imagen;
        this.categoria = categoria;
        this.puntuacion = 0;
        this.precio = precio;
        this.fechaIngreso = fechaIngreso;
    }    
       
    
    public Respuesta registrarArticulo(int status, int id_usuario){
        Articulo_DAO artic = new Articulo_DAO();
        Respuesta response = new Respuesta();
        try {
            this.id_articulo = artic.guardarReg(nombre, puntuacion, fechaIngreso,
                    descripcion, precio, imagen, categoria, status, id_usuario);
            if (this.id_articulo > 0) {
                response.setTipoMensaje(0);
                response.setMensaje("Articulo ingresado exitosamente");
                response.setObjetoRespuesta(this.id_articulo);
                return response;
            } else {
                response.setTipoMensaje(41);
                response.setMensaje("Hubo un error al ingresar el articulo, intentelo de nuevo");
                return response;
            }
        } catch (GuateBayException exception) {
            response.setTipoMensaje(41);
            response.setMensaje("Hubo un error al ingresar el articulo, intentelo de nuevo");            
            new CapaSeguridad.Error(exception).insertarError();
            return response;
        }
    }
    
    public Respuesta subastar(String fecha_inicio, double valor_inicial,
            String fecha_final, boolean status, int id_articulo) {

        Subasta_DAO subas = new Subasta_DAO();
        Respuesta response = new Respuesta();

        try{
        int respuesta = subas.guardarReg(fecha_inicio, valor_inicial, fecha_final, status, id_articulo);

        if (respuesta > 0) {
            response.setTipoMensaje(0);
            response.setMensaje("Articulo agregado a subasta exitosamente");
            response.setObjetoRespuesta(respuesta);
            return response;
        } else {
            response.setTipoMensaje(42);
            response.setMensaje("Hubo un error al ingresar la subasta, intentelo de nuevo");            
            return response;
        }
        }catch(GuateBayException exception){
            response.setTipoMensaje(42);
            response.setMensaje("Hubo un error al ingresar la subasta, intentelo de nuevo");
            new CapaSeguridad.Error(exception).insertarError();
            return response;
        }
    }

    
    /*************GETTERS and SETTERS************/
    
    
    public int getCategoria() {
        return categoria;
    }

    public void setCategoria(int categoria) {
        this.categoria = categoria;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getFechaIngreso() {
        return fechaIngreso;
    }

    public void setFechaIngreso(String fechaIngreso) {
        this.fechaIngreso = fechaIngreso;
    }

    public int getId_articulo() {
        return id_articulo;
    }

    public void setId_articulo(int id_articulo) {
        this.id_articulo = id_articulo;
    }

    public int getId_usuario() {
        return id_usuario;
    }

    public void setId_usuario(int id_usuario) {
        this.id_usuario = id_usuario;
    }

    public String getImagen() {
        return imagen;
    }

    public void setImagen(String imagen) {
        this.imagen = imagen;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public double getPrecio() {
        return precio;
    }

    public void setPrecio(double precio) {
        this.precio = precio;
    }

    public int getPuntuacion() {
        return puntuacion;
    }

    public void setPuntuacion(int puntuacion) {
        this.puntuacion = puntuacion;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public boolean isSubasta() {
        return subasta;
    }

    public void setSubasta(boolean subasta) {
        this.subasta = subasta;
    }
    
}
